revert: remove arf (Alternative R Frontend) from all images, upgrade to R 4.6.0#128
Conversation
This reverts the arf integration added in e215b17 / #121. Removed from all active Dockerfiles (minimal, osgeo, pythonr) and their downstream dependents (suggests, buildbook, latest, rocker-rpy, rocker-rpyjl, rust) which inherit the base image: - Drop arf binary installation (no longer ships /usr/local/bin/arf) - Remove system-wide shell alias 'alias R=arf' from /etc/bash.bashrc - Remove devcontainer.metadata setting r.rterm.linux=/usr/local/bin/arf - Strip arf-specific settings from .devcontainer/devcontainer.json - Remove arf documentation from README.Rmd / README.md - Also clean up archived Dockerfiles (binder, geocompy) The default R command now runs the standard R binary. Also bumps pythonr/Dockerfile R_VERSION from 4.5.1 to 4.6.0 to match the R version already shipped by rocker/geospatial:latest.
- Add pull_request trigger to ci.yml for PRs targeting master/main - Modify build-docker.yml to always build but only push to GHCR on non-PR events (push to main, schedule, workflow_dispatch) - On PRs, build step runs without login/push, verifying Dockerfiles and package installs succeed before merge
There was a problem hiding this comment.
Pull request overview
This PR reverts prior arf (Alternative R Frontend) integration across the image set, upgrades the pythonr image’s R installation to R 4.6.0, and updates CI so Docker images are built on pull requests while publishing remains restricted to non-PR events.
Changes:
- Removed arf installation, shell aliasing, and VS Code/devcontainer configuration pointing at arf.
- Upgraded
pythonrto install R4.6.0from Posit’s Debian 12 packages. - Enabled CI on
pull_requestand adjusted build workflow to avoid registry login/push on PRs.
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| README.Rmd | Removes arf-specific devcontainer documentation from the source README. |
| README.md | Removes rendered arf-specific devcontainer documentation. |
| pythonr/Dockerfile | Drops arf install/alias and bumps R_VERSION to 4.6.0. |
| osgeo/Dockerfile | Drops arf install/alias and removes devcontainer metadata label. |
| minimal/Dockerfile | Removes arf-related VS Code settings from devcontainer metadata label. |
| dockerfiles/archive/geocompy/Dockerfile | Removes arf install from archived image. |
| dockerfiles/archive/binder/Dockerfile | Removes arf install from archived image. |
| .github/workflows/ci.yml | Adds pull_request trigger for CI build validation. |
| .github/workflows/build-docker.yml | Skips registry login on PRs and conditionally disables pushing. |
| .devcontainer/devcontainer.json | Removes arf-specific VS Code R terminal settings. |
Comments suppressed due to low confidence (1)
.github/workflows/build-docker.yml:57
- On pull_request runs, this workflow still passes
secrets.GITHUB_TOKENinto the Docker build as a BuildKit secret (GITHUB_PAT). Since the PR now triggers builds, a malicious Dockerfile change could exfiltrate the token during the PR build; additionally, none of the repo Dockerfiles appear to use secret mounts (no--mount=type=secretusage found), so this secret is currently unnecessary.
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
secrets: |
"GITHUB_PAT=${{ secrets.GITHUB_TOKEN }}"
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| file: ${{ inputs.dockerfile }} | ||
| push: true | ||
| push: ${{ github.event_name != 'pull_request' }} |
There was a problem hiding this comment.
Updated the step name to "Build and push (push skipped on pull_request)" to make it clear that push is conditional and disabled on pull_request events.
The north-road/qgis-processing-saga-nextgen repository has been deleted, causing the Docker build to fail. Remove the plugin download, install, and registry lines. SAGA itself remains available via apt, but the QGIS bridge plugin is no longer available. See also PR #126 on the remove-saga-plugin branch.
SAGA GIS is no longer installed as part of the qgis image, reducing image size and build time. SAGA can still be installed manually with 'apt-get install saga' if needed.
|
Reasoning: Also it seemed to have continued issues in tests with students today. |
Split the geocompkg install in qgis/Dockerfile into two steps: 1. Compile sf, terra, stars, lwgeom from CRAN source — these link against ubuntugis-unstable GDAL/PROJ/GEOS where no CRAN binary is available. 2. Install everything else via pak::pak() which fetches pre-compiled binaries from RSPM for the remaining dependencies. Removes the old single install.packages() call with dependencies=TRUE that was compiling everything from source.
Summary
Removes the Alternative R Frontend (arf) that was added in #121 (commit e215b17), upgrades R to 4.6.0, and fixes a broken qgis build. Also adds CI checks on PRs to verify images build before merge.
What changed
arf removal (8 files, -58 lines)
R 4.6.0 upgrade
The rocker-based images (minimal, osgeo, qgis) already get R 4.6.0 via rocker/geospatial:latest and rocker/geospatial:dev-osgeo.
qgis fix: remove SAGA NextGen plugin download
Removed the broken download from north-road/qgis-processing-saga-nextgen (repo deleted, was causing build failure with exit code 8). SAGA remains available via apt, but the QGIS bridge plugin is no longer available.
CI: build on PR, publish only on main
Downstream images inheriting these changes
The following images inherit via FROM chain and are automatically covered:
Effect on running containers
The R command now resolves to the standard R binary rather than arf. Non-interactive scripts (Rscript, CI, Makefiles) were never affected by the alias mechanism, which only applies in interactive bash shells.